//package com.wsf.main.controller;
//
//import com.alibaba.fastjson.JSON;
//import com.alibaba.fastjson.JSONArray;
//import com.alibaba.fastjson.JSONObject;
//import com.hikvision.artemis.sdk.constant.Constants;
//import com.wsf.main.common.*;
//import com.wsf.main.dto.OutAndInDTO;
//import com.wsf.main.dto.UserDto;
//import com.wsf.main.service.RecviceDataService;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.util.StringUtils;
//import org.springframework.web.bind.annotation.*;
//
//import javax.annotation.Resource;
//import java.util.ArrayList;
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//import java.util.concurrent.ThreadPoolExecutor;
//
//
///**
// * 接受门禁系统的推送数据
// */
//
//@Slf4j
//@RestController
//@RequestMapping(value = "/api/v1/school")
//public class RecviceDataController {
//    @Autowired
//    private RecviceDataService recviceDataService;
//    @Value("${school.url}")
//    private String url;
//    @Resource(name = "threadPool")
//    private ThreadPoolExecutor threadPoolExecutor;
//
//    @RequestMapping({"/test3"})
//    public String test3(String taskId) {
//        Map<String, Object> stringObjectMap = new HashMap<>();
//        stringObjectMap.put("taskId", taskId);
//        String reult1 = ArtemisPostTest.callPostApiGetOrgList("/api/acps/v1/authDownload/task/progress", stringObjectMap);
//        return reult1;
//    }
//
//    public String checkUser(String StudentNo) {
//        String personId = null;
//        Map<String, Object> paramMap = new HashMap<>();
//        List<Object> list = new ArrayList();
//        Map<String, Object> map = new HashMap<>();
//        map.put("key", "jobNo");
//        map.put("operator", Integer.valueOf(0));
//        List<String> list1 = new ArrayList<>();
//        list1.add(StudentNo);
//        map.put("values", list1);
//        list.add(map);
//        paramMap.put("pageNo", Integer.valueOf(1));
//        paramMap.put("pageSize", Integer.valueOf(1));
//        paramMap.put("expressions", list);
//        Constants.DEFAULT_TIMEOUT = 9000;
//        String result = ArtemisPostTest.callPostApiGetOrgList("/api/resource/v2/person/advance/personList", paramMap);
//        log.info("查询人员返回信息---" + result);
//        JSONObject jsonObject = JSONObject.parseObject(result);
//        String data = jsonObject.getString("data");
//        JSONObject jsonObject1 = JSONObject.parseObject(data);
//        JSONArray jsonArray = jsonObject1.getJSONArray("list");
//        for (int i = 0; i < jsonArray.size(); i++) {
//            JSONObject jsonObject2 = jsonArray.getJSONObject(i);
//            personId = jsonObject2.getString("personId");
//        }
//        return personId;
//    }
//
//    /**
//     * 获取门禁信息
//     */
//    @RequestMapping(value = "/test5")
//    public void test45() {
//
//    }
//
//    @RequestMapping(value = "/test4")
//    public void test4() {
//        log.info("开始尝试添加权限并下载");
//        System.out.println("开始尝试请求设备信息");
//        //第一步创建下载任务
//        //再创建下载任务
//        Map<String, Object> stringObjectMap = new HashMap<>();
//        stringObjectMap.put("taskType", 4);
//        String reult1 = ArtemisPostTest.callPostApiGetOrgList("/api/acps/v1/authDownload/task/addition", stringObjectMap);
//        log.info("创建下载任务返回数据--" + reult1);
//        JSONObject jsonObject = JSONObject.parseObject(reult1);
//        if (jsonObject.get("code").equals("0")) {
//            String data = jsonObject.getString("data");
//            JSONObject jsonObject4 = JSONObject.parseObject(data);
//            String taskId = jsonObject4.getString("taskId");
//            Map<String, Object> mapAll = new HashMap<>();
//
//            List<Object> deviceList = new ArrayList<>();
//
//            List<Object> psersonListObject = new ArrayList<>();
//            Map<String, Object> mapPerson = new HashMap<>();
//            //人员信息
//            mapPerson.put("operatorType", 0);
//            mapPerson.put("startTime", "2022-09-30T01:26:25.000+08:00");
//            mapPerson.put("endTime", "2022-09-30T03:26:25.000+08:00");
//            mapPerson.put("personId", "31abba973c744ef78e06cafc668d40c1");
//
//            psersonListObject.add(mapPerson);
//            mapAll.put("personInfos", psersonListObject);
//            mapAll.put("taskId", taskId);
//            //设备
//            //查询设备信息
//            List<Map<String, String>> mapList = recviceDataService.getDeviceList();
//            for (Map<String, String> map : mapList) {
//                Map<String, Object> mapDevice = new HashMap<>();
//                mapDevice.put("resourceIndexCode", map.get("indexCode"));
//                mapDevice.put("resourceType", "door");
//                List<Integer> integerList = new ArrayList<>();
//                integerList.add(Integer.valueOf(String.valueOf(map.get("doorNo"))));
//                mapDevice.put("channelNos", integerList);
//                deviceList.add(mapDevice);
//            }
//            mapAll.put("resourceInfos", deviceList);
//            log.info("添加权限请求数据-" + mapAll);
//            Constants.DEFAULT_TIMEOUT = 9000;
//            String reult = ArtemisPostTest.callPostApiGetOrgList("/api/acps/v1/authDownload/data/addition", mapAll);
//            log.info("添加权限返回数据-" + reult);
//            //最后开始下载任务
//            //然后再去开始下载任务
//            Map<String, Object> stringObjectMap4 = new HashMap<>();
//            stringObjectMap4.put("taskId", taskId);
//            log.info("开始下载任务");
//            String reult4 = ArtemisPostTest.callPostApiGetOrgList("/api/acps/v1/authDownload/task/start", stringObjectMap4);
//            JSONObject jsonObject5 = JSONObject.parseObject(reult4);
//            if (jsonObject5.get("code").equals("0")) {
//                log.info("下发成功");
//            }
//        }
//        //下载任务中添加人员设备信息
//
//    }
//
//
//    @RequestMapping(value = "/leave")
//    public ResultUtil leave(@RequestBody UserDto userDto) {
//        ResultUtil resultUtil = new ResultUtil();
//        try {
//            log.info("接受到的请假信息--" + userDto.getStudentNo());
//            log.info("接受到的请假信息--" + userDto.getStudentName());
//            log.info("接受到的请假信息--" + userDto.getEndTime());
//            log.info("接受到的请假信息--" + userDto.getStartTime());
//            log.info("接受到的请假信息--" + userDto.getOnlyCode());
//            if (StringUtils.isEmpty(userDto.getStudentNo())) {
//                resultUtil.setCode("500");
//                resultUtil.setMessage("StudentNo必填");
//                return resultUtil;
//            }
//            if (StringUtils.isEmpty(userDto.getStudentName())) {
//                resultUtil.setCode("500");
//                resultUtil.setMessage("StudentName必填");
//                return resultUtil;
//            }
//            if (StringUtils.isEmpty(userDto.getEndTime())) {
//                resultUtil.setCode("500");
//                resultUtil.setMessage("endTime必填");
//                return resultUtil;
//            }
//            if (StringUtils.isEmpty(userDto.getStartTime())) {
//                resultUtil.setCode("500");
//                resultUtil.setMessage("startTime必填");
//                return resultUtil;
//            }
//            userDto.setStatus(0);
//            //插入数据库
//            recviceDataService.insert(userDto);
//            int i = 0;
////            threadPoolExecutor.submit(() -> synRecord(userDto));
//            resultUtil.setMessage("操作成功");
//            resultUtil.setCode("200");
//        } catch (Exception e) {
//            log.info("接受信息错误", e);
//        }
//
//        return resultUtil;
//    }
//
//
//    /**
//     * @Author: 王胜凡
//     * @CreateTime: 2022/9/30  2:17
//     * @Description: 异步处理数据
//     * @Version: 1.0
//     */
//    public void synRecord(UserDto userDto) {
//        try {
//            log.info("开始尝试添加权限并下载");
//            Constants.DEFAULT_TIMEOUT = 9000;
//            String personId = checkUser(userDto.getStudentNo());
//            if (org.apache.commons.lang3.StringUtils.isBlank(personId)) {
//                log.info("查询不到这用户信息不管---" + userDto.getStudentNo());
//            } else {
//                //第一步创建下载任务
//                //再创建下载任务
//                Map<String, Object> stringObjectMap = new HashMap<>();
//                stringObjectMap.put("taskType", 5);
//                String reult1 = ArtemisPostTest.callPostApiGetOrgList("/api/acps/v1/authDownload/task/addition", stringObjectMap);
//                log.info("创建下载任务返回数据--" + reult1);
//                JSONObject jsonObject = JSONObject.parseObject(reult1);
//                if (jsonObject.get("code").equals("0")) {
//                    String data = jsonObject.getString("data");
//                    JSONObject jsonObject4 = JSONObject.parseObject(data);
//                    String taskId = jsonObject4.getString("taskId");
//                    Map<String, Object> mapAll = new HashMap<>();
//                    userDto.setTaskId(taskId);
//                    List<Object> deviceList = new ArrayList<>();
//
//                    List<Object> psersonListObject = new ArrayList<>();
//                    Map<String, Object> mapPerson = new HashMap<>();
//
//                    //人员信息
//                    mapPerson.put("operatorType", 0);
//                    mapPerson.put("startTime", userDto.getStartTime());
//                    mapPerson.put("endTime", userDto.getEndTime());
//                    mapPerson.put("personId", userDto);
//
//                    psersonListObject.add(mapPerson);
//                    mapAll.put("personInfos", psersonListObject);
//                    mapAll.put("taskId", taskId);
//                    //设备
//                    //查询设备信息
//
//                    List<Map<String, String>> mapList = recviceDataService.getDeviceList();
//                    log.info("查询数据库返回数据-" + mapList);
//                    for (Map<String, String> map : mapList) {
//                        Map<String, Object> mapDevice = new HashMap<>();
//                        mapDevice.put("resourceIndexCode", map.get("indexCode"));
//                        mapDevice.put("resourceType", "door");
//                        List<Integer> integerList = new ArrayList<>();
//                        integerList.add(Integer.valueOf(String.valueOf(map.get("doorNo"))));
//                        mapDevice.put("channelNos", integerList);
//                        deviceList.add(mapDevice);
//                    }
//                    mapAll.put("resourceInfos", deviceList);
//                    log.info("下载任务中添加数据-" + mapAll);
//
//                    String reult = ArtemisPostTest.callPostApiGetOrgList("/api/acps/v1/authDownload/data/addition", mapAll);
//                    log.info("下载任务中添加数据-" + reult);
//                    JSONObject jsonObject6 = JSONObject.parseObject(reult);
//                    if (jsonObject6.get("code").equals("0")) {
//                        //最后开始下载任务
//                        //然后再去开始下载任务
//                        Map<String, Object> stringObjectMap4 = new HashMap<>();
//                        stringObjectMap4.put("taskId", taskId);
//                        log.info("开始下载任务");
//                        String reult4 = ArtemisPostTest.callPostApiGetOrgList("/api/acps/v1/authDownload/task/start", stringObjectMap4);
//                        JSONObject jsonObject5 = JSONObject.parseObject(reult4);
//                        if (jsonObject5.get("code").equals("0")) {
//                            log.info("下发成功");
//                            //这里去吧状态更新为已下发
//                            userDto.setStatus(1);
//                            if (org.apache.commons.lang3.StringUtils.isNotBlank(userDto.getTaskId())) {
//                                recviceDataService.updateUserStatusAndTask(userDto);
//                            } else {
//                                recviceDataService.updateUserStatus(userDto);
//                            }
//
//                        } else {
//                            log.info("开始任务失败");
//                        }
//                    } else {
//                        log.info("创建下载任务中添加数据失败");
//                    }
//
//                } else {
//                    log.info("创建下载任务失败");
//                }
//            }
//
//        } catch (Exception e) {
//            log.info("请求海康服务器异常", e);
//        }
//
//
//    }
//
//    /**
//     * @Author: 王胜凡
//     * @CreateTime: 2022/9/30  2:17
//     * @Description: 异步处理数据
//     * @Version: 1.0
//     */
//    public void synRecordNew(List<UserDto> userDtoList, String taskId) {
//        try {
//            log.info("开始尝试添加权限并下载");
//            //第一步创建下载任务
//            //再创建下载任务
//            Map<String, Object> mapAll = new HashMap<>();
//            List<Object> deviceList = new ArrayList<>();
//            List<Object> psersonListObject = new ArrayList<>();
//            for (UserDto userDto : userDtoList) {
//                Map<String, Object> mapPerson = new HashMap<>();
//                //人员信息
//                mapPerson.put("operatorType", 0);
//                mapPerson.put("startTime", userDto.getStartTime());
//                mapPerson.put("endTime", userDto.getEndTime());
//                mapPerson.put("personId", userDto.getPersonId());
//
//                psersonListObject.add(mapPerson);
//            }
//            mapAll.put("personInfos", psersonListObject);
//            mapAll.put("taskId", taskId);
//            //设备
//            //查询设备信息
//            List<Map<String, String>> mapList = recviceDataService.getDeviceList();
//            log.info("查询数据库返回数据-" + mapList);
//            for (Map<String, String> map : mapList) {
//                Map<String, Object> mapDevice = new HashMap<>();
//                mapDevice.put("resourceIndexCode", map.get("indexCode"));
//                mapDevice.put("resourceType", "door");
//                List<Integer> integerList = new ArrayList<>();
//                integerList.add(Integer.valueOf(String.valueOf(map.get("doorNo"))));
//                mapDevice.put("channelNos", integerList);
//                deviceList.add(mapDevice);
//            }
//            mapAll.put("resourceInfos", deviceList);
//            log.info("下载任务中添加数据-" + mapAll);
//
//            String reult = ArtemisPostTest.callPostApiGetOrgList("/api/acps/v1/authDownload/data/addition", mapAll);
//            log.info("下载任务中添加数据-" + reult);
//            JSONObject jsonObject6 = JSONObject.parseObject(reult);
//            if (jsonObject6.get("code").equals("0")) {
//                //最后开始下载任务
//                //然后再去开始下载任务
//                Map<String, Object> stringObjectMap4 = new HashMap<>();
//                stringObjectMap4.put("taskId", taskId);
//                log.info("开始下载任务");
//                String reult4 = ArtemisPostTest.callPostApiGetOrgList("/api/acps/v1/authDownload/task/start", stringObjectMap4);
//                JSONObject jsonObject5 = JSONObject.parseObject(reult4);
//                if (jsonObject5.get("code").equals("0")) {
//                    log.info("下发成功");
//                    //这里去吧状态更新为已下发
//                    for (UserDto userDto : userDtoList) {
//                        userDto.setStatus(1);
//                        userDto.setTaskId(taskId);
//                        recviceDataService.updateUserStatusAndTask(userDto);
//                    }
//
//
//                } else {
//                    log.info("开始任务失败");
//                }
//            } else {
//                log.info("创建下载任务中添加数据失败");
//            }
//
//
//        } catch (Exception e) {
//            log.info("请求海康服务器异常", e);
//        }
//
//
//    }
//
//
//}
